package com.scnu.recruitment.domain.po;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;

import com.scnu.recruitment.enums.DeliveryType;
import com.scnu.recruitment.enums.ExpressSize;
import com.scnu.recruitment.enums.PayStatus;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 快递代拿表
 * </p>
 *
 * @author startech
 * @since 2025-10-21
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("exp_order")
public class ExpOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;


    @TableField("order_number")
    private Long orderNumber;



    /**
     * 下单用户id
     */
    @TableField("user_id")
    private Integer userId;
    @TableField("user_number_code")
    private String userNumberCode;


    /**
     * 取件人
     */
    @TableField("receiver")
    private String receiver;

    /**
     * 电话号码
     */
    @TableField("phone")
    private String phone;

    /**
     * 取件地址
     */
    @TableField("pick_address")
    private String pickAddress;

    /**
     * 取件码
     */
    @TableField("pick_code")
    private String pickCode;

    /**
     * 快递尺寸
     */
    @TableField("express_size")
    private ExpressSize expressSize;

    /**
     * 配送方式
     */
    @TableField("delivery_type")
    private DeliveryType deliveryType;

    /**
     * 送达地点
     */
    @TableField("send_address")
    private String sendAddress;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 已经缴纳的初缴运费
     */
    @TableField("first_fee")
    private BigDecimal firstFee;

    /**
     * 实际应缴运费（快递员填）
     */
    @TableField("final_fee")
    private BigDecimal finalFee;

    /**
     * 支付状态
     */
    @TableField("pay_status")
    private PayStatus payStatus;

    /**
     * 下单时间
     */
    @TableField("order_time")
    private LocalDateTime orderTime;

    /**
     * 是否已删除（0否, 大于0删除时间）
     */
    @TableField("is_delete_time")
    private Integer isDeleteTime;

    /**
     * 添加时间
     */
    @TableField("add_time")
    private Integer addTime;

    /**
     * 更新时间
     */
    @TableField("upd_time")
    private Integer updTime;

    @TableField(exist = false)
    private BigDecimal totalFee;


    @TableField("prepay_id")
    private String prepayId;
}
